package com.cn.hty.controller;

import java.io.IOException;
import java.util.List;

import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.validation.Valid;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.RequestMapping;

import com.cn.hty.pojo.User;
import com.cn.hty.service.IUserService;
import com.cn.hty.utils.ImageCode;

@Controller
@RequestMapping("/index")
public class IndexController {
	/*
	 * @Resource默认按 byName 自动注入,是J2EE提供的， 需导入Package: javax.annotation.Resource;
	 * 
	 * @Resource有两个中重要的属性：name和type ，而Spring将@Resource注解的name属性解析为bean的
	 * 名字，而type属性则解析为bean的类型。所以如果使用name属性，则使用byName的自动注入策略，而使用 type属性时则使用
	 * byType自动注入策略。如果既不指定name也不指定type属性，这时将通过反射机制使用by Name自动注入策略。
	 */
	@Resource
	ImageCode imageCode;
	@Resource 
	IUserService userService;
	public static Logger logger = Logger.getLogger(IndexController.class);

	@RequestMapping("/getImage")
	public void getImage(HttpServletRequest request,
			HttpServletResponse response) throws IOException {
		// 禁止图像缓存。
		response.setHeader("Pragma", "no-cache");
		response.setHeader("Cache-Control", "no-cache");
		response.setDateHeader("Expires", 0);

		response.setContentType("image/jpeg");
		// 将图像输出到Servlet输出流中。
		ServletOutputStream sos = response.getOutputStream();
		ImageIO.write(imageCode.getImage(request), "jpeg", sos);
		sos.close();
	}
    @RequestMapping("/login")
	public String login(@Valid User user, BindingResult result, Model model,
			HttpSession httpSession) {
        if (result.hasErrors()){
            List<ObjectError> errorList = result.getAllErrors();
            for(ObjectError error : errorList){
                System.out.println(error.getDefaultMessage());
            }
        }
        return "showUser";
//		String imgcode = (String) request.getParameter("VER_CD").toLowerCase();
//		String username = request.getParameter("USR_ID");
//		String password = request.getParameter("USR_PWD");
//		System.out.println(httpSession.getAttribute("SESSIONCODE") + imgcode
//				+ username + password);
//		// 获取session
//		HttpSession session = request.getSession();
//		// 根据键值取session中的值
//		String sessionCode = session.getAttribute("SESSIONCODE").toString().toLowerCase();
//		logger.info(sessionCode);
////		// 获取session中所有的键值
////		Enumeration<?> enumeration = session.getAttributeNames();
////		// 遍历enumeration中的
////		while (enumeration.hasMoreElements()) {
////			// 获取session键值
////			String name = enumeration.nextElement().toString();
////			// 根据键值取session中的值
////			Object value = session.getAttribute(name);
////			// 打印结果
////			System.out.println("<B>" + name + "</B>=" + value + "<br>/n");
////		}
//		 if(sessionCode.equals(imgcode)){
//		 User user = userService.getUserByName(username);
//		 if(user.getPassword().equals(password)){
//			 model.addAttribute("flag", "right"); 
//		 }
//		 model.addAttribute("user",user);
//		 return "showUser";
//		 }else{
//		    model.addAttribute("flag", "wrong");
//			return "index";
//		 }
	}
}
